home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src / htsglobal.h < prev    next >
C/C++ Source or Header  |  2006-04-09  |  11KB  |  552 lines

  1. /* ------------------------------------------------------------ */
  2. /*
  3. HTTrack Website Copier, Offline Browser for Windows and Unix
  4. Copyright (C) Xavier Roche and other contributors
  5.  
  6. This program is free software; you can redistribute it and/or
  7. modify it under the terms of the GNU General Public License
  8. as published by the Free Software Foundation; either version 2
  9. of the License, or any later version.
  10.  
  11. This program is distributed in the hope that it will be useful,
  12. but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. GNU General Public License for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with this program; if not, write to the Free Software
  18. Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
  19.  
  20.  
  21. Important notes:
  22.  
  23. - We hereby ask people using this source NOT to use it in purpose of grabbing
  24. emails addresses, or collecting any other private information on persons.
  25. This would disgrace our work, and spoil the many hours we spent on it.
  26.  
  27.  
  28. Please visit our Website: http://www.httrack.com
  29. */
  30.  
  31.  
  32. /* ------------------------------------------------------------ */
  33. /* File: Global #define file                                    */
  34. /* Author: Xavier Roche                                         */
  35. /* ------------------------------------------------------------ */
  36.  
  37. // Fichier rΘunissant l'ensemble des defines
  38.  
  39. #ifndef HTTRACK_GLOBAL_DEFH
  40. #define HTTRACK_GLOBAL_DEFH
  41.  
  42. // Version
  43. #define HTTRACK_VERSION      "3.40-2"
  44. #define HTTRACK_VERSIONID    "3.40.3"
  45. #define HTTRACK_AFF_VERSION  "3.x"
  46. //#define HTTRACK_AFF_WARNING  "This is a BETA release of WinHTTrack Website Copier ("HTTRACK_VERSION")\nPlease report any crashes, bugs or problems"
  47.  
  48. #ifndef HTS_NOINCLUDES
  49. #ifndef _WIN32_WCE
  50. #include <stdio.h>
  51. #include <stdlib.h>
  52. #else
  53. #include <stdio.h>
  54. #include <stdlib.h>
  55. #ifdef HTS_CECOMPAT
  56. #include "cecompat.h"
  57. #else
  58. #include "celib.h"
  59. #endif
  60. #endif
  61. #endif
  62.  
  63. // DΘfinition plate-forme
  64. #include "htssystem.h"
  65. #include "htsconfig.h"
  66.  
  67. // WIN32 types
  68. #ifdef _WIN32
  69. #ifndef SIZEOF_LONG
  70. #define SIZEOF_LONG 4
  71. #define SIZEOF_LONG_LONG 8
  72. #endif
  73. #endif
  74.  
  75.  
  76. // config.h
  77. #ifdef _WIN32
  78.  
  79. // WIN32
  80. #ifndef _WIN32_WCE
  81.  
  82. #define HAVE_SYS_STAT_H 1
  83. #define HAVE_SYS_TYPES_H 1
  84. #define HAVE_SYS_STAT_H 1
  85. #ifndef DLLIB
  86. #define DLLIB 1
  87. #endif
  88. #ifndef HTS_INET6
  89. #define HTS_INET6 1
  90. #endif
  91. #ifndef S_ISREG
  92. #define S_ISREG(m) ((m) & _S_IFREG)
  93. #endif
  94.  
  95. #else
  96.  
  97. // Win32CE
  98. //#pragma runtime_checks( "s", restore )
  99. #define HTS_SPARE_MEMORY 1
  100. #define HTS_ALIGN 8
  101. #define BIGSTK static
  102. #undef DLLIB   // LoadLibrary(libssl) crashes
  103. #define NOSTRDEBUG 1
  104. #undef HTS_MAKE_KEYWORD_INDEX
  105. #ifdef HTS_CECOMPAT
  106. #define HTS_DO_NOT_USE_FTIME 1
  107. #undef HAVE_SYS_STAT_H
  108. #undef HAVE_SYS_TYPES_H
  109. #else
  110. #undef HTS_DO_NOT_USE_FTIME
  111. #define HAVE_SYS_STAT_H 1
  112. #define HAVE_SYS_TYPES_H 1
  113. #endif
  114.  
  115. #define HTS_DLOPEN 0
  116. #undef HTS_INET6
  117. #ifndef S_ISREG
  118. #define S_ISREG(m) ((m) & _S_IFREG)
  119.  
  120. #endif
  121.  
  122. #endif
  123.  
  124. #else
  125.  
  126. #include "config.h"
  127.  
  128. #ifndef FTIME
  129. #define HTS_DO_NOT_USE_FTIME
  130. #endif
  131.  
  132. #ifndef SETUID
  133. #define HTS_DO_NOT_USE_UID
  134. #endif
  135.  
  136. #ifndef HTS_LONGLONG
  137. #ifdef SIZEOF_LONG_LONG
  138. #if SIZEOF_LONG_LONG==8
  139. #define HTS_LONGLONG 1
  140. #endif
  141. #endif
  142.  
  143. #ifndef HTS_LONGLONG
  144. #ifdef __sun
  145. #define HTS_LONGLONG 0
  146. #endif
  147. #ifdef __osf__
  148. #define HTS_LONGLONG 0
  149. #endif
  150. #ifdef __linux
  151. #define HTS_LONGLONG 1
  152. #endif
  153. #ifdef _WIN32
  154. #define HTS_LONGLONG 1
  155. #endif
  156. #endif
  157. #endif
  158.  
  159. #ifdef DLLIB
  160. #define HTS_DLOPEN 1
  161. #else
  162. #define HTS_DLOPEN 0
  163. #endif
  164.  
  165. #endif
  166.  
  167. // Socket windows ou socket unix
  168. #ifdef _WIN32
  169. #undef HTS_PLATFORM
  170. #define HTS_PLATFORM 1
  171. #define HTS_WIN 1
  172.  
  173. #else
  174.  
  175. #define HTS_WIN 0
  176. #ifdef __linux
  177. #undef HTS_PLATFORM
  178. #define HTS_PLATFORM 3
  179. #endif
  180. #endif
  181.  
  182. // don't spare memory usage by default
  183. #ifndef HTS_SPARE_MEMORY
  184. #define HTS_SPARE_MEMORY 0
  185. #endif
  186.  
  187. #ifndef BIGSTK 
  188. #define BIGSTK
  189. #endif
  190.  
  191. // compatibilitΘ DOS
  192. #if HTS_WIN
  193. #define HTS_DOSNAME 1
  194. #else
  195. #define HTS_DOSNAME 0
  196. #endif
  197.  
  198. // utiliser zlib?
  199. #ifndef HTS_USEZLIB
  200. // autoload
  201. #define HTS_USEZLIB 1
  202. #endif
  203.  
  204. #ifndef HTS_INET6
  205. #define HTS_INET6 0
  206. #endif
  207.  
  208. // utiliser openssl?
  209. #ifndef HTS_USEOPENSSL
  210. // autoload
  211. #define HTS_USEOPENSSL 1
  212. #endif
  213.  
  214. // utiliser mms://?
  215. #ifndef HTS_USEMMS
  216. #define HTS_USEMMS 1
  217. #endif
  218.  
  219. #ifndef HTS_DLOPEN
  220. #define HTS_DLOPEN 1
  221. #endif
  222.  
  223. #ifndef HTS_USESWF
  224. #define HTS_USESWF 1
  225. #endif
  226.  
  227. #if HTS_WIN
  228. #else
  229. #define __cdecl
  230. #endif
  231.  
  232. #ifdef HTS_ANALYSTE_CONSOLE
  233. #undef HTS_ANALYSTE_CONSOLE
  234. #define HTS_ANALYSTE_CONSOLE 1
  235. #endif
  236.  
  237. #if HTS_ANALYSTE
  238. #else
  239. #if HTS_WIN
  240. #else
  241. #undef HTS_ANALYSTE
  242. // Analyste
  243. #define HTS_ANALYSTE 1
  244. #define HTS_ANALYSTE_CONSOLE 1
  245. #endif
  246. #endif
  247.  
  248.  
  249. /* rc file */
  250. #if HTS_WIN
  251. #define HTS_HTTRACKRC "httrackrc"
  252. #else
  253.  
  254. #ifndef HTS_ETCPATH
  255. #define HTS_ETCPATH "/etc"
  256. #endif
  257. #ifndef HTS_BINPATH
  258. #define HTS_BINPATH "/usr/bin"
  259. #endif
  260. #ifndef HTS_LIBPATH
  261. #define HTS_LIBPATH "/usr/lib"
  262. #endif
  263. #ifndef HTS_PREFIX
  264. #define HTS_PREFIX "/usr"
  265. #endif
  266.  
  267. #define HTS_HTTRACKRC ".httrackrc"
  268. #define HTS_HTTRACKCNF HTS_ETCPATH"/httrack.conf"
  269.  
  270. #ifdef DATADIR
  271. #define HTS_HTTRACKDIR DATADIR"/httrack/"
  272. #else
  273. #define HTS_HTTRACKDIR HTS_PREFIX"/share/httrack/"
  274. #endif
  275.  
  276. #endif
  277.  
  278. #if HTS_SPARE_MEMORY==0
  279. /* Gestion des tables de hashage */
  280. #define HTS_HASH_SIZE 20147
  281. /* Taille max d'une URL */
  282. #define HTS_URLMAXSIZE 1024
  283. /* Taille max ligne de commande (>=HTS_URLMAXSIZE*2) */
  284. #define HTS_CDLMAXSIZE 1024
  285. #else
  286. /* Gestion des tables de hashage */
  287. #define HTS_HASH_SIZE 1023
  288. /* Taille max d'une URL */
  289. #define HTS_URLMAXSIZE 256
  290. /* Taille max ligne de commande (>=HTS_URLMAXSIZE*2) */
  291. #define HTS_CDLMAXSIZE 1024
  292. #endif
  293.  
  294. /* Copyright (C) Xavier Roche and other contributors */
  295. #define HTTRACK_AFF_AUTHORS "[XR&CO'2006]"
  296. #define HTS_DEFAULT_FOOTER "<!-- Mirrored from %s%s by HTTrack Website Copier/"HTTRACK_AFF_VERSION" "HTTRACK_AFF_AUTHORS", %s -->"
  297. #define HTTRACK_WEB "http://www.httrack.com"
  298. #define HTS_UPDATE_WEBSITE "http://www.httrack.com/update.php3?Product=HTTrack&Version="HTTRACK_VERSIONID"&VersionStr="HTTRACK_VERSION"&Platform=%d&Language=%s"
  299.  
  300. #define H_CRLF "\x0d\x0a"
  301. #define CRLF   "\x0d\x0a"
  302. #if HTS_WIN
  303. #define LF "\x0d\x0a"
  304. #else
  305. #define LF "\x0a"
  306. #endif
  307.  
  308. /* Θquivaut α "paramΦtre vide", par exemple -F (none) */
  309. #define HTS_NOPARAM "(none)"
  310. #define HTS_NOPARAM2 "\"(none)\""
  311.  
  312. /* maximum et minimum */
  313. #define maximum(A,B) ( (A) > (B) ? (A) : (B) )
  314. #define minimum(A,B) ( (A) < (B) ? (A) : (B) )
  315.  
  316. /* chaine vide? */
  317. #define strnotempty(A) (((A)[0]!='\0') ? 1 : 0)
  318.  
  319. /* optimisation inline si possible */
  320. #ifdef __cplusplus
  321. #define HTS_INLINE inline
  322. #else
  323. #define HTS_INLINE
  324. #endif
  325.  
  326. #ifdef _WIN32
  327. #ifdef LIBHTTRACK_EXPORTS
  328. #define HTSEXT_API __declspec(dllexport)
  329. #else
  330. #define HTSEXT_API __declspec(dllimport)
  331. #endif
  332. #else
  333. #define HTSEXT_API 
  334. #endif
  335.  
  336. #ifndef HTS_LONGLONG
  337. #ifdef HTS_NO_64_BIT
  338. #define HTS_LONGLONG 0
  339. #else
  340. #define HTS_LONGLONG 1
  341. #endif
  342. #endif
  343.  
  344. // long long int? (or int)
  345. // (and int cast for system functions like malloc() )
  346.  
  347. #if HTS_LONGLONG
  348. #ifdef LLINT_FORMAT
  349.   typedef LLINT_TYPE LLint;
  350.   typedef LLINT_TYPE TStamp;
  351.   #define LLintP LLINT_FORMAT
  352. #else
  353.  #if HTS_WIN
  354.   typedef __int64 LLint;
  355.   typedef __int64 TStamp;
  356.   #define LLintP "%I64d"
  357.  #else
  358.  #if HTS_PLATFORM==0
  359.   typedef long long int LLint;
  360.   typedef long long int TStamp;
  361.   #define LLintP "%lld"
  362.  #else
  363.   typedef long long int LLint;
  364.   typedef long long int TStamp;
  365.   #define LLintP "%Ld"
  366.  #endif
  367.  #endif
  368. #endif
  369. #else
  370.  typedef int LLint;
  371.  #define LLintP "%d"
  372.  typedef double TStamp;
  373. #endif
  374.  
  375. #ifdef LFS_FLAG
  376. typedef LLint INTsys;
  377. #define INTsysP LLintP
  378. #ifdef __linux
  379. #define HTS_FSEEKO
  380. #endif
  381. #else
  382. typedef int INTsys;
  383. #define INTsysP "%d"
  384. #endif
  385.  
  386. /* Default alignement */
  387. #ifndef HTS_ALIGN
  388. #define HTS_ALIGN (sizeof(void*))
  389. #endif
  390.  
  391. /* IPV4, IPV6 and various unified structures */
  392. #define HTS_MAXADDRLEN 64
  393.  
  394. #if HTS_WIN
  395. #else
  396. #define __cdecl 
  397. #endif
  398.  
  399. /* mode pour mkdir ET chmod (accΦs aux fichiers) */
  400. #define HTS_PROTECT_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR)
  401. #if HTS_ACCESS
  402. #define HTS_ACCESS_FILE (S_IRUSR|S_IWUSR|S_IRGRP|S_IROTH)
  403. #define HTS_ACCESS_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH)
  404. #else
  405. #define HTS_ACCESS_FILE (S_IRUSR|S_IWUSR)
  406. #define HTS_ACCESS_FOLDER (S_IRUSR|S_IWUSR|S_IXUSR)
  407. #endif
  408.  
  409. /* vΘrifier la dΘclaration des variables prΘprocesseur */
  410. #ifndef HTS_DOSNAME
  411. #error | HTS_DOSNAME Has not been defined.
  412. #error | Set it to 1 if you are under DOS, 0 under Unix.
  413. #error | Example: place this line in you source, before includes:
  414. #error | #define HTS_DOSNAME 0
  415. #error
  416. #error
  417. #endif
  418. #ifndef HTS_ACCESS
  419. /* Par dΘfaut, accΦs α tous les utilisateurs */
  420. #define HTS_ACCESS 1
  421. #endif
  422.  
  423. /* fflush sur stdout */
  424. #define io_flush { fflush(stdout); fflush(stdin); }
  425.  
  426.  
  427.  
  428. /* HTSLib */
  429.  
  430. // Cache DNS, accΘlΦre les rΘsolution d'adresses
  431. #define HTS_DNSCACHE 1
  432.  
  433. // ID d'une pseudo-socket locale pour les file://
  434. #define LOCAL_SOCKET_ID -500000
  435.  
  436. // taille de chaque buffer (10 sockets 650 ko)
  437. #if HTS_SPARE_MEMORY==0
  438. #define TAILLE_BUFFER 65536
  439. #else
  440. #define TAILLE_BUFFER 8192
  441. #endif
  442.  
  443. #if HTS_WIN
  444. #else
  445. // use pthreads.h
  446.  
  447. #ifndef THREADS
  448. #define HTS_DO_NOT_USE_PTHREAD
  449. #endif
  450.  
  451. #ifdef HTS_DO_NOT_USE_PTHREAD
  452. #define USE_PTHREAD 0
  453. #else
  454. #define USE_PTHREAD 1
  455. #endif
  456. #endif
  457.  
  458. #if HTS_WIN
  459. #define USE_BEGINTHREAD 1
  460. #else
  461. #if USE_PTHREAD
  462. #define USE_BEGINTHREAD 1
  463. #else
  464. /* sh*t.. */
  465. #define USE_BEGINTHREAD 0
  466. #endif
  467. #endif
  468.  
  469. #ifdef _DEBUG
  470. // trace mallocs
  471. //#define HTS_TRACE_MALLOC
  472. #ifdef HTS_TRACE_MALLOC
  473. typedef unsigned long int t_htsboundary;
  474. typedef struct mlink {
  475.   char* adr;
  476.   int len;
  477.   int id;
  478.   struct mlink* next;
  479. } mlink;
  480. static const t_htsboundary htsboundary = 0xDEADBEEF;
  481. #endif
  482. #endif
  483.  
  484. /* strxxx debugging */
  485. #ifndef NOSTRDEBUG
  486. #define STRDEBUG 1
  487. #endif
  488.  
  489.  
  490. /* ------------------------------------------------------------ */
  491. /* Debugging                                                    */
  492. /* ------------------------------------------------------------ */
  493.  
  494. // dΘbuggage types
  495. #define DEBUG_SHOWTYPES 0
  496. // backing debug
  497. #define BDEBUG 0
  498. // chunk receive
  499. #define CHUNKDEBUG 0
  500. // realloc links debug
  501. #define MDEBUG 0
  502. // cache debug
  503. #define DEBUGCA 0
  504. // DNS debug
  505. #define DEBUGDNS 0
  506. // savename debug
  507. #define DEBUG_SAVENAME 0
  508. // debug robots
  509. #define DEBUG_ROBOTS 0
  510. // debug hash
  511. #define DEBUG_HASH 0
  512. // VΘrification d'intΘgritΘ
  513. #define DEBUG_CHECKINT 0
  514. // nbr sockets debug
  515. #define NSDEBUG 0
  516.  
  517. // dΘbuggage HTSLib
  518. #define HDEBUG 0
  519. // surveillance de la connexion
  520. #define CNXDEBUG 0
  521. // debuggage cookies
  522. #define DEBUG_COOK 0
  523. // dΘbuggage hard..
  524. #define HTS_WIDE_DEBUG 0
  525. // debuggage deletehttp et cie
  526. #define HTS_DEBUG_CLOSESOCK 0
  527. // debug tracage mΘmoire
  528. #define MEMDEBUG 0
  529.  
  530. // htsmain
  531. #define DEBUG_STEPS 0
  532.  
  533.  
  534. // DΘbuggage de contr⌠le
  535. #if HTS_DEBUG_CLOSESOCK
  536. #define _HTS_WIDE 1
  537. #endif
  538. #if HTS_WIDE_DEBUG
  539. #define _HTS_WIDE 1
  540. #endif
  541. #if _HTS_WIDE
  542. extern FILE* DEBUG_fp;
  543. #define DEBUG_W(A)  { if (DEBUG_fp==NULL) DEBUG_fp=fopen("bug.out","wb"); fprintf(DEBUG_fp,":>"A); fflush(DEBUG_fp); }
  544. #undef _
  545. #define _ ,
  546. #endif
  547.  
  548.  
  549.  
  550. #endif
  551.  
  552.